home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / PROG_TOO / C013.ZIP / TEE.C < prev    next >
Text File  |  1990-01-19  |  2KB  |  72 lines

  1. /********************************************************************
  2.  * C Users Group (U.K) C Source Code Library File CUGLIB.013        *
  3.  * Inquiries to: M. Houston, 36 Whetstone Clo. Farquhar Rd.         *
  4.  * Edgbaston, Birmingham B15 2QN ENGLAND                *
  5.  ********************************************************************
  6.  * File name: tee.c
  7.  * Program name:tee 
  8.  * Source of file: Ron Wellstead
  9.  * Purpose: An MS-DOS copy of the UNIX utility of the same name.
  10.  * Changes: <who what when & why major changes have been made>      
  11.  ********************************************************************/
  12.  
  13. /*
  14.  *
  15.  *    @(#) tee.c 1.2 87/07/27 
  16.  *
  17.  *    UNIX style tee utility for dos
  18.  *
  19.  *    copyright (c) 1987 Ron Wellsted.
  20.  *    This software is provided on the understanding that it is
  21.  *    NOT to be used for commercial gain. It may be freely distributed
  22.  *    in source or object form among amateur and hobby computer users ONLY!
  23.  *
  24.  *    copies stdin to stdout and file
  25.  *    usage:    tee file
  26.  *    normally used as part of a pipe eg dir | tee con | sort
  27.  *    will display a directory both before and after sorting.
  28.  *    written for Microsoft C.
  29.  */
  30. #include    <stdio.h>
  31.  
  32. char what[]="@(#) tee VR 1.0.0 15 Jul 1987";
  33.  
  34. main(argc,argv)
  35. int argc;
  36. char *argv[];
  37. {
  38.     char *cmd;
  39.     FILE *fp;
  40.  
  41.     cmd=argv[1];
  42.     if (argc==1)    /* no args; copy to stdout */
  43.         filecopy(NULL);
  44.     else if ((*cmd=='-')&&(tolower(*++cmd)=='a')) {
  45.         if ((fp=fopen(argv[2],"a"))==NULL) {
  46.             fprintf(stderr,"tee: can't open %s\n",argv[2]);
  47.             exit(1);
  48.         }
  49.     } else {
  50.         if ((fp=fopen(argv[1],"w"))==NULL) {
  51.             fprintf(stderr,"tee: can't create %s\n",argv[1]);
  52.             exit(1);
  53.         }
  54.     }
  55.     filecopy(fp);
  56.     fclose(fp);
  57.     exit(0);
  58. }
  59.  
  60. filecopy(fp)
  61. FILE *fp;
  62. {
  63.     int c;
  64.  
  65.     if (fp==NULL)
  66.         while ((c=getchar())!=EOF) putchar(c);
  67.     else while ((c=getchar())!=EOF) {
  68.         putchar(c);
  69.         putc(c,fp);
  70.     }
  71. }
  72.